package com.ruoyi.common.utils;

import java.util.UUID;

/**
 * 通用幂等性密钥生成工具类
 */
public class IdempotentKeyGenerator {

    /**
     * 生成UUID v4格式的幂等性密钥
     * UUID v4是基于随机数生成的唯一标识符，适用于分布式环境下的幂等性控制
     *
     * @return String UUID v4格式的幂等性密钥
     */
    public static String generateIdempotentKey() {
        return UUID.randomUUID().toString();
    }

    /**
     * 生成不带连字符的UUID v4幂等性密钥
     *
     * @return String 不带连字符的UUID v4幂等性密钥
     */
    public static String generateCompactIdempotentKey() {
        return UUID.randomUUID().toString().replace("-", "");
    }

    /**
     * 根据业务标识生成带前缀的幂等性密钥
     *
     * @param businessPrefix 业务前缀标识
     * @return String 带业务前缀的幂等性密钥
     */
    public static String generateIdempotentKeyWithPrefix(String businessPrefix) {
        if (businessPrefix == null || businessPrefix.trim().isEmpty()) {
            return generateIdempotentKey();
        }
        return businessPrefix + "_" + generateIdempotentKey();
    }

    public static void main(String[] args) {
        String key1 = IdempotentKeyGenerator.generateIdempotentKey();
        System.out.println("key1 = " + key1);
    }
}
